package com.lyl.myaiagent.agent;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;

/**
 * @author lyl
 * @version 1.0
 * @CreateTime: 2025-08-20
 */
@Slf4j
@Data
@EqualsAndHashCode(callSuper = true)
public abstract class ReActAgent extends BaseAgent{
    @Override
    public String step() {
        boolean shouldAct = think();
        if(!shouldAct){
            return "思考完成：无需下一步行动";
        }else {
            return act();
        }
    }

    /**
     * 处理当前状态，决定下一步行动
     * @return 是否需要执行行动
     */
    public abstract boolean think();

    /**
     * 决定执行行动
     * @return 行动执行的结果
     */
    public abstract String act();
}
